package uoc.ei.practica;

import uoc.ei.tads.Iterador;

/**
 * Entidad que representa un área geográfica
 *
 */
public class Area extends IdentifiedObject {
	/**
	 * nombre del área
	 */
	private String name;
	
	/**
	 * lista de clubs de pádel de un área geográfica.
	 */
	private IdentifiedList<PaddleClub> clubs;

	public Area(String areaId, String name) {
		super(areaId);
		this.name=name;
		this.clubs=new IdentifiedList<PaddleClub>();
	}
	

	public void setName(String name) {
		this.name=name;
	}

	/**
	 * método que añade un nuevo club dentro de un área. En caso que el club ya exista se mostrará un error. 
	 */
	public void addPaddleClub(String paddleClubId, String name, int numOfCourts) throws EIException {
		PaddleClub club =(PaddleClub)this.clubs.getIdentifiedObject(paddleClubId);
		if (club==null) {
			club = new PaddleClub(paddleClubId, name, numOfCourts);
			this.clubs.insertarAlFinal(club);
		}
		else throw new EIException(Messages.PADDLE_CLUB_ALREADY_EXISTS);
	}

	/**
	 * método que proporciona una lista de clubs dentro de un área.
	 */
	public Iterador<PaddleClub> paddleClubs() {
		return this.clubs.elementos();
	}

	/**
	 * método que proporciona información de un club.
	 */
	public PaddleClub getPaddleClub(String paddleClubId) {
		return (PaddleClub)this.clubs.getIdentifiedObject(paddleClubId);
	}

	/**
	 * método que proporciona una representación en formato texto de un área.
	 */
	public String toString() {
		StringBuffer sb=new StringBuffer(super.toString());
		sb.append("name: "+this.name).append(Messages.LS);
		return sb.toString();
	}


}



